import axios from 'axios';
import { message } from 'tdesign-react';

const baseURL = '';

const instance = axios.create({ baseURL });

instance.interceptors.request.use(
  (config) => {
    // 可添加 token 等通用参数
    config.headers.Authorization = localStorage.getItem('token') || '';
    return config;
  },
  (error) => Promise.reject(error),
);

// 响应拦截器：统一处理错误提示
instance.interceptors.response.use(
  (response) => response.data,
  (error) => {
    message.error(`请求失败：${error.response?.data?.message || error.message}`);
    return Promise.reject(error);
  },
);

// 员工列表请求参数类型（对齐后端 UserListRequest）
export interface UserListRequest {
  company_id: string; // 必传字段
  page: number; // ≥1
  size: number; // [1, 100]
  search?: string | null;
}

// 员工列表响应类型
export interface UserListResponse {
  items: never[];
  // eslint-disable-next-line no-use-before-define
  data: User[]; // User 类型需补充具体字段
  code: number;
  message: string;
  total?: number;
}

// 员工详情/创建/更新通用类型（对齐后端 UserCreate/UserUpdate）
export interface User {
  user_id: string;
  validateResult: boolean;
  nick_name: string; // [1, 50]
  phone?: string; // [11, 20]
  job_number?: string; // [1, 20]
  position?: string;
  permissions?: string[];
  company_id: string;
  created_at: string;
  updated_at: string;
  registered: boolean;
  // 其他字段...
}

/**
 * 获取员工列表
 * @param params UserListRequest
 */
export const getEmployeeList = (params: UserListRequest) => instance.post<UserListResponse>('/api/users/list', params);

/**
 * 新增员工
 * @param data User（对齐 UserCreate 模型）
 */
export const addEmployee = (data: User) => instance.post<User>('/api/users/add', data);

/**
 * 更新员工
 * @param userId 用户 ID
 * @param data User（对齐 UserUpdate 模型）
 */
// eslint-disable-next-line camelcase
export const updateEmployee = (data: User) => instance.put<User>('/api/users', data);

/**
 * 删除员工
 * @param userId 用户 ID
 */
export const deleteEmployee = (userId: User) => instance.delete(`/api/users/${userId}`);
